package edu.ubb.remeye.server.plugin.service;

public interface EventService {

	///////////////////////////////////////////////////////////////////////////////////
	////		ATTRIBUTES - EventService
	///////////////////////////////////////////////////////////////////////////////////

	/**
	 * Operating system name for the plug-in. This is compared to 
	 * the "os.name" System.property, and must be equal with it, 
	 * in case to be used for the compatible operating system.
	 */
	public static final String OS_NAME_PROPERTY = "os.name";
	


	///////////////////////////////////////////////////////////////////////////////////
	////		METHODS - EventService
	///////////////////////////////////////////////////////////////////////////////////

	/**
	 * Key is pressed.
	 * @param keyCode Code for the respective key.
	 */
	public void keyPress(int keyCode);
	
	/**
	 * Key is released.
	 * @param keyCode Code for the respective key.
	 */
	public void keyRelease(int keyCode);
	
	/**
	 * Mouse is moved to a point.
	 * @param x X coordinate of the point.
	 * @param y Y coordinate of the point.
	 */
	public void mouseMove(int x, int y);
	
	/**
	 * Click on mouse button in the (x, y) position.
	 * @param button Clicked button.
	 * @param x Click x coordinate.
	 * @param y Click y coordinate.
	 */
	public void mouseClick(int button, int x, int y);
	
	/**
	 * Double click on mouse button in the (x, y) position.
	 * @param button Double clicked button.
	 * @param x Double click x coordinate.
	 * @param y Double click y coordinate.
	 */
	public void mouseDoubleClick(int button, int x, int y);
	
	/**
	 * Mouse button is pressed in the (x, y) position.
	 * @param button Pressed button.
	 * @param x Press x coordinate.
	 * @param y Press y coordinate.
	 */
	public void mousePressed(int button, int x, int y);
	
	/**
	 * Mouse button is released in the (x, y) position.
	 * @param button Released button.
	 * @param x Release x coordinate.
	 * @param y Release y coordinate.
	 */
	public void mouseReleased(int button, int x, int y);
	
	/**
	 * Mouse is dragged.
	 */
	public void mouseDragged();
	
	/**
	 * Mouse wheel is rotated.
	 * @param notch Number of wheel notches (movements).
	 */
	public void mouseWheel(int notch);
}
